package com.example.filter;

import com.example.model.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Slf4j
public class UserLoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        HttpSession session = request.getSession();

        //获取URI地址
        String requestURI = request.getRequestURI();
        String[] split = requestURI.split("/");
        String type = split[1];

        //若为登录请求，则放行
        if (requestURI.contains("user/login_auth")){
            return true;
        }

        //若不为登录请求且session中无数据，证明未登录，拒绝请求
        User user = (User) session.getAttribute("user");
        if (user==null){
            return false;
        }

        //获取session中的用户信息查询该用户是否有权限，有权限才可放行
        //判断是否有用户管理权限
        if ("user".equals(type)&&user.getSystem().equals("1")){
            return true;
        }

        //判断是否有基础信息权限
        if ("basic".equals(type)&&user.getBasic().equals("1")){
            return true;
        }

        //判断是否有入库操作权限
        if ("inWarehouse".equals(type)&&user.getInWarehouse().equals("1")){
            return true;
        }

        //判断是否有出库操作权限
        if ("outWarehouse".equals(type)&&user.getOutWarehouse().equals("1")){
            return true;
        }

        //判断是否有物资管理权限
        if ("goods".equals(type)&&user.getGoods().equals("1")){
            return true;
        }

        //判断是否有物资管理权限
        if ("statistics".equals(type)&&user.getStatistics().equals("1")){
            return true;
        }

        return false;
    }
}
